let fs = require('mz/fs');
let path = require('path');

// 先序 异步 串行
// function rmdir (url, cb) {
//     fs.stat(url, (err, statObj) => {
//         if (statObj.isDirectory()) {
//             fs.readdir(url, (err, dirs) => {
//                 dirs = dirs.map(dir => path.join(url, dir))
//                 let index = 0;
//                 function next () {
//                     if (index === dirs.length) return fs.rmdir(url, cb)
//                     rmdir(dirs[index], () => next(++index))
//                 } 
//                 next(index);
//             })
//         } else {
//             fs.unlink(url, cb)
//         }
//     })
// }

async function rmDir (url) {
    let statObj = await fs.stat(url)
    if (statObj.isDirectory()) {
        let dirs = await fs.readdir(url)
        for (let dir of dirs) {
            await rmDir(path.join(url, dir))
        }
        await fs.rmdir(url)
    } else {
        await fs.unlink(url)
    }
}

async function removeDir (url) {
    let statObj = await fs.stat(url);
    if (statObj.isDirectory()) {
        let dirs = await fs.readdir(url);
        dirs = dirs.map(dir => removeDir(path.join(url, dir)))
        await Promise.all(dirs)
        await fs.rmdir(url)
    } else {
        await fs.unlink(url);
    }
}

rmDir('a')

// removeDir('a').then(() => {
//     console.log('删除成功')
// })